﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;

namespace NextGenSystems.WHMCS
{
    [DataContract()]
    public class GetClientsProductsRS : WHMCSBASE
    {
        #region Attributes

        private int _TotalResults;
        private int _StartNumber;
        private int _NumReturned;
        private List<ClientProduct> _ClientProduct;



        #endregion

        #region Properties


        [DataMember()]
        public List<ClientProduct> ClientProduct
        {
            get { return _ClientProduct; }
            set { _ClientProduct = value; }
        }

        [DataMember()]
        public virtual int TotalResults
        {
            get { return _TotalResults; }
            set
            {
                if (_TotalResults != value)
                {
                    _TotalResults = value;
                    NotifyPropertyChanged("TotalResults");
                }
            }
        }

        [DataMember()]
        public virtual int StartNumber
        {
            get { return _StartNumber; }
            set
            {
                if (_StartNumber != value)
                {
                    _StartNumber = value;
                    NotifyPropertyChanged("StartNumber");
                }
            }
        }

        [DataMember()]
        public virtual int NumReturned
        {
            get { return _NumReturned; }
            set
            {
                if (_NumReturned != value)
                {
                    _NumReturned = value;
                    NotifyPropertyChanged("NumReturned");
                }
            }
        }


        #endregion
    }

    public class ClientProduct
    {
        #region Attributes

        private String _Id;
        private String _OrderId;
        private String _Pid;
        private String _RegDate;
        private String _Name;
        private String _Groupname;
        private String _Domain;
        private String _Dedicatedip;
        private String _Serverid;
        private String _Servername;
        private String _Firstpaymentamount;
        private String _Recurringamount;
        private String _Paymentmethodpaypal;
        private String _PaymentmethodnameCredit;
        private String _Billingcycle;
        private String _Nextduedate;
        private String _Status;
        private String _Username;
        private String _Password;
        private String _Subscriptionid;
        private String _Promoid;
        private String _Overideautosuspend;
        private String _Overidesuspenduntil;
        private String _Ns1;
        private String _Ns2;
        private String _Assignedips;
        private String _Notes;
        private String _Diskusage;
        private String _Disklimit;
        private String _Bwusage;
        private String _Bwlimit;
        private String _Lastupdate;
        private List<CustomField> _Customfields;
        private List<Configuration> _Configuration;

        #endregion

        #region Properties

        [DataMember()]
        public String Id
        {
            get { return _Id; }
            set { _Id = value; }
        }

        [DataMember()]
        public String OrderId
        {
            get { return _OrderId; }
            set { _OrderId = value; }
        }

        [DataMember()]
        public String Pid
        {
            get { return _Pid; }
            set { _Pid = value; }
        }

        [DataMember()]
        public String RegDate
        {
            get { return _RegDate; }
            set { _RegDate = value; }
        }

        [DataMember()]
        public String Name
        {
            get { return _Name; }
            set { _Name = value; }
        }
        [DataMember()]
        public String Groupname
        {
            get { return _Groupname; }
            set { _Groupname = value; }
        }
        [DataMember()]
        public String Domain
        {
            get { return _Domain; }
            set { _Domain = value; }
        }
        [DataMember()]
        public String Dedicatedip
        {
            get { return _Dedicatedip; }
            set { _Dedicatedip = value; }
        }
        [DataMember()]
        public String Serverid
        {
            get { return _Serverid; }
            set { _Serverid = value; }
        }
        [DataMember()]
        public String Servername
        {
            get { return _Servername; }
            set { _Servername = value; }
        }
        [DataMember()]
        public String Firstpaymentamount
        {
            get { return _Firstpaymentamount; }
            set { _Firstpaymentamount = value; }
        }
        [DataMember()]
        public String Recurringamount
        {
            get { return _Recurringamount; }
            set { _Recurringamount = value; }
        }
        [DataMember()]
        public String Paymentmethodpaypal
        {
            get { return _Paymentmethodpaypal; }
            set { _Paymentmethodpaypal = value; }
        }
        [DataMember()]
        public String PaymentmethodnameCredit
        {
            get { return _PaymentmethodnameCredit; }
            set { _PaymentmethodnameCredit = value; }
        }
        [DataMember()]
        public String Billingcycle
        {
            get { return _Billingcycle; }
            set { _Billingcycle = value; }
        }
        [DataMember()]
        public String Nextduedate
        {
            get { return _Nextduedate; }
            set { _Nextduedate = value; }
        }
        [DataMember()]
        public String Status
        {
            get { return _Status; }
            set { _Status = value; }
        }
        [DataMember()]
        public String Username
        {
            get { return _Username; }
            set { _Username = value; }
        }
        [DataMember()]
        public String Password
        {
            get { return _Password; }
            set { _Password = value; }
        }

        [DataMember()]
        public String Subscriptionid
        {
            get { return _Subscriptionid; }
            set { _Subscriptionid = value; }
        }

        [DataMember()]
        public String Promoid
        {
            get { return _Promoid; }
            set { _Promoid = value; }
        }

        [DataMember()]
        public String Overideautosuspend
        {
            get { return _Overideautosuspend; }
            set { _Overideautosuspend = value; }
        }

        [DataMember()]
        public String Overidesuspenduntil
        {
            get { return _Overidesuspenduntil; }
            set { _Overidesuspenduntil = value; }
        }

        [DataMember()]
        public String Ns1
        {
            get { return _Ns1; }
            set { _Ns1 = value; }
        }

        [DataMember()]
        public String Ns2
        {
            get { return _Ns2; }
            set { _Ns2 = value; }
        }
        [DataMember()]
        public String Assignedips
        {
            get { return _Assignedips; }
            set { _Assignedips = value; }
        }
        [DataMember()]
        public String Notes
        {
            get { return _Notes; }
            set { _Notes = value; }
        }
        [DataMember()]
        public String Diskusage
        {
            get { return _Diskusage; }
            set { _Diskusage = value; }
        }
        [DataMember()]
        public String Disklimit
        {
            get { return _Disklimit; }
            set { _Disklimit = value; }
        }
        [DataMember()]
        public String Bwusage
        {
            get { return _Bwusage; }
            set { _Bwusage = value; }
        }
        [DataMember()]
        public String Bwlimit
        {
            get { return _Bwlimit; }
            set { _Bwlimit = value; }
        }
        [DataMember()]
        public String Lastupdate
        {
            get { return _Lastupdate; }
            set { _Lastupdate = value; }
        }
        [DataMember()]
        public List<CustomField> Customfields
        {
            get { return _Customfields; }
            set { _Customfields = value; }
        }
        [DataMember()]
        public List<Configuration> Configuration
        {
            get { return _Configuration; }
            set { _Configuration = value; }
        }

        #endregion
    }

    public class Configuration
    {
        #region Attributes

        private String _Option;
        private String _Value;

        #endregion

        #region Properties

        [DataMember()]
        public String Option
        {
            get { return _Option; }
            set { _Option = value; }
        }
        [DataMember()]
        public String Value
        {
            get { return _Value; }
            set { _Value = value; }
        }
        #endregion
    }

    public class CustomField
    {
        #region Attributes

        private String _Name;
        private String _Value;

        #endregion

        #region Properties

        [DataMember()]
        public String Name
        {
            get { return _Name; }
            set { _Name = value; }
        }

        [DataMember()]
        public String Value
        {
            get { return _Value; }
            set { _Value = value; }
        }
        #endregion
    }
}